#ifndef JUEGO_H_
#define JUEGO_H_

#include "Tablero.h"
#include "../Common/Movimiento.h"
#include <jsoncpp/json.h>
#include <queue>

class Juego {
private:
	Tablero* tablero;
	std::queue<Json::Value> tablerosJsonizados;
	unsigned puntajeActual;
	unsigned puntajeMaximo;

public:
	Juego(Json::Value root);
	
	//Devuelve true si quedaron movimientos en el tablero.
	bool hayMasMovimientos();
	
	//Hace el movimiento de dos items en el tablero.
	//Devuelve true si tuvo exito, False si no.
	bool mover(Movimiento& mov);
	
	//Devuelve true si hay, False si no.
	bool hayTableroParaEnviar();
	
	//Devuelve el primer tablero de la lista de tablerosJsonizados.
	Json::Value obtenerTablero();
	
	//Devuelve el puntaje actual.
	unsigned obtenerPuntaje();
	
	//Devuelve el puntaje Maximo.
	unsigned getPuntajeMaximo();
	
	~Juego();
};

#endif /* JUEGO_H_ */
